Получение страницы с удаленного хоста: как отправить файл cookie
Допустим, нам надо получить страницу, которая требует, чтобы с запросом был послан файл cookie. Для этого воспользуемся расширением CURL:
$c = curl_init('http://www.example.com/needs-cookie.php');
curl_setopt($c, CURLOPT_COOKIE, 'user=evgenijj; activity=yes');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
$page = curl_exec($c);
curl_close($c);
?>
Информация из cookie-файлов отправляется на сервер в заголовке Cookie. В рассмотреннном примере с помощью опции CURLOPT_COOKIE мы отправляем на сервер два элемента cookie: один с именем user и значением evgenijj, а другой — с именем activity и значением yes.
Чтобы запросить страницу, которая устанавливает cookie, а затем отправлять ей запросы с информацией из cookie-файлов, можно использовать функциональность расширения CURL, называемую “cookie jar” (контейнер для cookie). При первом запросе указываем в опции CURLOPT_COOKIEJAR имя файла, в котором хранятся cookie. В последующих запросах указываем в опции CURLOPT_COOKIEFILE имя этого файла, и CURL будет читать элементы cookies из него и отправлять их в запросе. Это особенно удобно, когда вы отправляете серию запросов, в которой первый запрос попадает на сайт, устанавливающий cookie для сеанса или для аутентификации, а последующие запросы должны содержать информацию из cookie, чтобы считаться законными:
// Временный файл для хранения cookie
$cookie_jar = tempnam('/tmp', 'cookie');
// Войти в систему на сайте
$c = curl_init('http://bank.example.com/login.php?user=donald&pasword=qwerty');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
$page = curl_exec($c);
curl_close($c);
// Получить информацию о балансе на счете
$c = curl_init('http://bank.example.com/balance.php?account=checking');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
$page = curl_exec($c);
curl_close($c);
// Внести вклад на счет
$c = curl_init('http://bank.example.com/deposit.php');
curl_setopt($c, CURLOPT_POST, true);
curl_setopt($c, CURLOPT_POSTFIELDS, 'account=checking&amount=123.45');
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_jar);
$page = curl_exec($c);
curl_close($c);
// Удалить "cookie jar"
unlink($cookie_jar);
?>
Ссылки по теме:
Sergio1792:
Пасиба большое, благодаря вам разобрался =)))
5 Апрель 2009, 1:39